package com.transac.demo.service;
//REQUIRED 如果当前没有事务，就新建一个事务，如果已经存在一个事务中，加入到这个事务中。这是默认的选择。
public interface TransactionRequiredService {
    /*
     * 外层有事务注解，内层有事务注解，内层抛错
     * 外层回滚，内层回滚
     */
    void updateMoney1();

    /*
     * 外层无事务注解，内层有事务注解，内层抛错
     * 外层提交，内层回滚
     */
    void updateMoney2();

    /*
     * 外层有事务注解，内层无事务注解，内层抛错
     * 外层回滚，内层回滚
     * 这里注意，外层的事务会传播到内层，即使内层无事务
     */
    void updateMoney3();

    /*
     * 外层有事务注解，内层无事务注解，外层抛错
     * 外层回滚，内层回滚
     * 这里注意，外层的事务会传播到内层，即使内层无事务
     */
    void updateMoney4();

    /*
     * 外层有事务注解，内层（有）无事务注解，内层抛错，内层try/catch
     * 外层提交，内层提交
     *
     */
    void updateMoney5();

    /*
     * 外层有事务注解，内层有事务注解，内层抛错，外层try/catch
     * 外层回滚，内层回滚
     * 注意这里和Nested不同，Nested外层提交，内层回滚
     */
    void updateMoney6();
}
